﻿/**
 * \file VueVilleExpansion.cs
 * \brief Classe VueVilleExpansion
 * \author ARTUR Vincent
 * \author LAPERDRIX Pierre
 * \version 1.0
 */

namespace WpfJeu
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Controls;
    using System.Windows.Media.Imaging;
    using System.Windows.Input;
    using System.Windows;
    using Implem;

    /**
    * \class VueVilleExpansion
    * \brief Vue des expansions des villes du plateau de jeu
    */
    public class VueVilleExpansion : Image
    {
        /*!< VueVillePrincipale associée à la vue*/
        private VueVillePrincipale _vvp;
        /*!< Propriete accedant a l'attribut _vvp */
        public VueVillePrincipale Vvp
        {
            get { return _vvp; }
            set { _vvp = value; }
        }

        /*!< Position de cette vue sur la grille de jeu*/
        private Position _pos;
        /*!< Propriete accedant a l'attribut _pos */
        public Position Pos
        {
            get { return _pos; }
            set { _pos = value; }
        }

        /*!< Routed Event pour que le clic sur une ville soit gere par le MainWindow */
        public static readonly RoutedEvent ClickExpansionEvent = EventManager.RegisterRoutedEvent(
            "ClickExpansion", RoutingStrategy.Bubble, typeof(RoutedEventHandler), typeof(VueVilleExpansion));

        /*!< Propriete ajoutant/supprimant l'event ClickExpansionEvent */
        public event RoutedEventHandler ClickExpansion
        {
            add { AddHandler(ClickExpansionEvent, value); }
            remove { RemoveHandler(ClickExpansionEvent, value); }
        }


        /**
         * \fn public VueVilleExpansion(VueVillePrincipale v, Position p)
         * \brief Constructeur de VueVilleExpansion
         * \param v la VueVillePrincipale liée à cette vue
         * \param p la position de cette vue sur la grille de jeu
         */
        public VueVilleExpansion(VueVillePrincipale v, Position p)
        {
            Vvp = v;
            Pos = p;

            //Position de l'image
            Canvas.SetZIndex(this, 1);
            //Ajout de la source de l'image
            this.Height = 35;
            this.Width = 35;
            this.Source = new BitmapImage(new Uri("/WpfJeu;component/Ressources/champ.jpg", UriKind.Relative));

            //Ajout d'un handler pour le clic gauche
            this.MouseLeftButtonDown += new MouseButtonEventHandler(expansion_MouseLeftButtonDown);
        }

        /**
         * \fn private void expansion_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
         * \brief Envoi d'un event à la MainWindow pour la prise en charge du clic sur la ville
         * \param sender
         * \param e
         */
        private void expansion_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {
            //Event handled
            e.Handled = true;

            //Declenchement de l'evenement ClickEvent
            RoutedEventArgs newEventArgs = new RoutedEventArgs(VueVilleExpansion.ClickExpansionEvent);
            RaiseEvent(newEventArgs);
        }

    }
}
